package dto

import (
	"github.com/gogf/gf/v2/os/gtime"
)

// 订单商品项
type OrderGoodsItem struct {
	GoodsImg   string `json:"goodsImg"   dc:"商品图片"`
	GoodsName  string `json:"goodsName"  dc:"商品名称"`
	GoodsPrice int    `json:"goodsPrice" dc:"商品单价（分）"`
	Num        int    `json:"num"        dc:"购买数量"`
}

// 订单列表项
type OrderListItem struct {
	OrderId     int64            `json:"orderId"      dc:"订单ID"`
	OrderSn     string           `json:"orderSn"      dc:"订单编号"`
	CreateTime  *gtime.Time      `json:"createTime"   dc:"创建时间"`
	Status      int              `json:"status"       dc:"订单状态 (1:待支付, 2:已支付, 3:已发货, 4:已完成, 5:已取消)"`
	GoodsList   []OrderGoodsItem `json:"goodsList"    dc:"商品列表"`
	SumFee      int              `json:"sumFee"       dc:"订单总金额（分）"`
	PayWaitTime int64            `json:"payWaitTime"  dc:"支付等待时间（秒）"`
}

// 订单列表响应
type OrderListRes struct {
	Page       int             `json:"page"      dc:"当前页码"`
	Limit      int             `json:"limit"     dc:"每页数量"`
	Total      int             `json:"total"     dc:"总订单数"`
	TotalPages int             `json:"totalPages" dc:"总页数"`
	List       []OrderListItem `json:"list"      dc:"订单列表"`
}

// 订单列表请求参数
type OrderListReq struct {
	Page  int `form:"page" json:"page"  form:"page"  v:"required|min:1#页码必须大于等于1" default:"1"`                // 页码（必填，最小1）
	Limit int `form:"limit" json:"limit" form:"limit" v:"required|min:1|max:100#每页数量必须在1-100之间" default:"10"` // 每页条数（必填，1-100之间）
	// 其他参数（如订单状态等，可选）
	Status int `form:"status" json:"status" form:"status" v:"min:0#状态不能为负数" default:"0"`
}
